package br.unicamp.ic.inf300.arena.action;

import java.util.Locale;

import net.sourceforge.stripes.action.ActionBeanContext;
import br.unicamp.ic.inf300.arena.action.vendas.IdentificacaoEspectadoresManagerBean;
import br.unicamp.ic.inf300.arena.modelo.controleacesso.UsuarioSistema;
import br.unicamp.ic.inf300.arena.modelo.logistico.Evento;
import br.unicamp.ic.inf300.arena.modelo.vendas.Venda;

/**
 * Classe utilizada pelas classes ActionBean com o proposito de abstrair p/ estas a interacao
 * com a API de Servlets, essencialmente no uso dos recursos desta API relacionados aos
 * escopos de comportilhamento (HttpRequest, HttpSession etc.), Strings externalizadas
 * por meio de arquivos de propriedades (internacionalizacao) etc.
 *
 * O beneficio desta classe eh diminuir o acoplamento direto do codigo da sua aplicacao com
 * a referida API.
 *
 * Outro grande beneficio desta classe eh centralizar em um unico ponto o acesso aos recursos
 * compartilhados criados pela aplicacao - objetos do modelo armazenados em algum escopo
 * de compartilhamento para serem utilizados pelas JSPs e apresentados ao usuario.  
 *
 */
public class ArenaActionBeanContext extends ActionBeanContext {

    //UsuarioSistema
	public UsuarioSistema getUsuarioSistema() {
        return (UsuarioSistema) getRequest().getSession().getAttribute("usuarioSistema");
    }
    public void setUsuarioSistema(UsuarioSistema usuarioSistema) {
        getRequest().getSession().setAttribute("usuarioSistema", usuarioSistema);
    }

    //EventoSelecionado
    public Evento getEventoSelecionado() {
        return (Evento) getRequest().getSession().getAttribute("eventoSelecionado");
    }
    public void setEventoSelecionado(Evento evento) {
        getRequest().getSession().setAttribute("eventoSelecionado", evento);
    }

    //Venda
    public Venda getVenda() {
    	return (Venda) getRequest().getSession().getAttribute("vendaBilhetes");
    }
    public void setVenda(Venda venda) {
        getRequest().getSession().setAttribute("vendaBilhetes", venda);
    }

    //Locale
    public Locale getLocale() {
    	return (Locale) getRequest().getSession().getAttribute("locale");
    }
    public void setLocale(Locale locale) {
    	getRequest().getSession().setAttribute("locale", locale);
    }

    //IdentificacaoEspectadoresManagerBean
    public IdentificacaoEspectadoresManagerBean getIdentificacaoEspectadoresManagerBean() {
    	return (IdentificacaoEspectadoresManagerBean) getRequest().getSession()
				.getAttribute("espectadoresMBean");
    }
    public void setIdentificacaoEspectadoresManagerBean(IdentificacaoEspectadoresManagerBean mbean) {
        getRequest().getSession().setAttribute("espectadoresMBean", mbean);
    }

    //sair
    public void sair() {
        getRequest().getSession().invalidate();
    }
}